Release 10.1A: OpenEdge Data Management:
DataServer for Microsoft SQL Server


FIND statements

The DataServer fully supports the FIND FIRST, CURRENT, LAST, PREV, and NEXT statements for MSS data source tables that have unique indexes. If a table has no unique index, only the FIND FIRST and FIND NEXT statements are available for that table. The following section provides additional information about specific FIND statements.

FIND NEXT statement

The FIND NEXT statement can generate different results with the DataServer when compared to the same statement executed against an OpenEdge database. A FIND NEXT statement refers to a previous FIND statement only if the WHERE clauses of each statement are identical. If the WHERE clauses are different, or if one of the statements does not have a WHERE clause, the FIND NEXT will behave like a FIND FIRST statement.

FIND PREV and FIND LAST statements

Applications that use the FIND PREV or FIND LAST statements work on tables in a manner consistent with the OpenEdge database. The only exception occurs when the FIND PREV or FIND LAST statement fails. In OpenEdge, the cursor is located after the last record that was scanned. In the MSS data source, the cursor behaves as if the failed FIND had never occurred. To support these statements, a table must include support for the Progress ROWID function (through either a PROGRESS_RECID column or an indexed NUMBER column with unique values). See the "ROWID function" section for more information.

For example, the procedure find.p accesses OpenEdge and MS SQL Server databases using the same FIND and FIND PREV statements in each case, as shown:

find.p
/* This code accesses an OpenEdge database. */
FIND demo.customer WHERE demo.customer.cust-num = 3.
FIND PREV demo.customer.
DISPLAY demo.customer.cust-num
  LABEL "PROGRESS DATABASE RESULT" WITH FRAME new-frame.

/* This code accesses an MSS data source. */
FIND mssdemo.customer WHERE mssdemo.customer.cust-num = 3.
FIND PREV mssdemo.customer.
DISPLAY mssdemo.customer.cust-num
  LABEL "MSS DATA SOURCE RESULT" WITH COL 29. 

When you run find.p with an OpenEdge table and an MSS table, you get the following results (assuming that the database has records for customer numbers 1 through 4):

If the FIND PREV statement fails, the cursor remains located after customer.cust-num 3 in the OpenEdge table, which was the last record scanned. In the data source table, the cursor is positioned at cust-num 2. Failed finds do not affect cursor position in data source tables.


Copyright © 2005 Progress Software Corporation
www.progress.com
Voice: (781) 280-4000
Fax: (781) 280-4095